/**
 * 
 */
package com.cn.practice.facade;

/**
 * 外观模式比较简单-常用来系统设计上
 * 再Controller层和Service层之间加上一个facade层用来做参数的转换
 * 这样就是先了前端web层和业务层的隔离，产生的问题就是不停的转换参数
 * 如果参数是List并且数据量特别大 返回几万个 那么就很麻烦
 * @author zhangyang
 *
 */
public class FacadePractice2 {
public static void main(String[] args) {
	/**
	 * 外观模式例子 -开电视看DVD一个动作实现
	 */
	HomeFacade homeFacade = new HomeFacade();
	homeFacade.start();
	homeFacade.end();
}
}

class DVD {
	public void on() {
		System.out.println("打开DVD");
	}
	public void off() {
		System.out.println("关掉DVD");
	}
	public void pause() {
		System.out.println("DVD暂停");
	}
	public void procee() {
		System.out.println("DVD继续");
	}
}

class Screen{
	public void on() {
		System.out.println("打开显示器");
	}
	public void off() {
		System.out.println("关掉显示器");
	}
	public void loud() {
		System.out.println("显示器声音调大");
	}
	public void quiet() {
		System.out.println("显示器声音调小");
	}
}

/**
 * 家庭影院外观类
 * @author zhangyang
 *
 */
class HomeFacade{
	DVD dvd=new DVD();
	Screen screen=new Screen();
	
	void start() {
		dvd.on();
		screen.on();
	}
	void loud() {
		screen.loud();
	}
	void end() {
		dvd.off();
		screen.off();
	}
}